package cn.iocoder.yudao.module.mqtt.service.mqtt;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.module.mqtt.controller.admin.config.vo.ConfigPageReqVO;
import cn.iocoder.yudao.module.mqtt.dal.dataobject.config.MqttConfig2DO;
import cn.iocoder.yudao.module.mqtt.dal.dataobject.mqtt.MqttConfigDO;
import cn.iocoder.yudao.module.mqtt.dal.mysql.mqtt.MqttConfigMapper;
import cn.iocoder.yudao.module.mqtt.framework.mqtt.MqttInstanceManager;
import cn.iocoder.yudao.module.mqtt.framework.util.TenantContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * MQTT配置服务
 *
 * @author 芋道源码
 */
public interface MqttConfigService {

    /**
     * 获取所有启用的MQTT配置
     */
    public List<MqttConfigDO> getEnabledConfigs();

    /**
     * 根据ID获取MQTT配置
     */
    public MqttConfigDO getConfigById(Long id) ;

    /**
     * 创建MQTT配置
     */
    public Long createConfig(MqttConfigDO config);
    /**
     * 更新MQTT配置
     */
    public void updateConfig(MqttConfigDO config) ;

    /**
     * 删除MQTT配置
     */
    public void deleteConfig(Long id);
    /**
     * 启动MQTT实例
     */
    public void startInstance(Long configId) ;

    /**
     * 停止MQTT实例
     */
    public void stopInstance(Long configId) ;
    /**
     * 获取实例运行状态
     */
    public boolean isInstanceRunning(Long configId) ;
    /**
     * 初始化所有启用的MQTT实例
     */
    public void initAllEnabledInstances();


    PageResult<MqttConfigDO> getConfigPage(ConfigPageReqVO pageReqVO);


} 